package cn.iocoder.yudao.module.famous.doctor.dal.dataobject.msg;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 消息会话表
 * </p>
 *
 * @author D.Luo
 * @since 2021-03-17
 */
@TableName("msg_conversation")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MsgConversation extends Model<MsgConversation> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 用户id
     */
    @TableField("user_id")
    @Schema(description = "用户id")
    private Integer userId;

    /**
     *  用户类型  1平台客服   3医生 4用户
     */
    @TableField("user_type")
    @Schema(description = "用户类型  1平台客服   3医生 4用户")
    private Integer userType;

    /**
     * 接收人id
     */
    @TableField("from_user_id")
    @Schema(description = "接收人id")
    private Integer fromUserId;

    /**
     * 接收人类型  1平台客服   3医生 4用户
     */
    @TableField("from_user_type")
    @Schema(description = "接收人类型  1平台客服   3医生 4用户")
    private Integer fromUserType;

    /**
     * 会话类型 1单聊 2系统消息
     */
    @TableField("type")
    @Schema(description = "接收人id")
    private Integer type;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "修改时间")
    private LocalDateTime updateTime;

    /**
     * 最后一条会话消息
     */
    @TableField("last_content")
    @Schema(description = "最后一条会话消息")
    private String lastContent;

    /**
     * 未读消息数量
     */
    @TableField("unread")
    @Schema(description = "未读消息数量")
    private Integer unread;

    /**
     *  会话方用户昵称
     */
    @TableField("user_name")
    @Schema(description = "会话方用户昵称")
    private String userName;

    /**
     *  会话方用户头像
     */
    @TableField("user_photo")
    @Schema(description = "会话方用户头像")
    private String userPhoto;

    /**
     * 订单编号
     */
    @TableField("order_no")
    @Schema(description = "订单编号")
    private String orderNo;

    /**
     * 是否已关闭 0否 1是
     */
    @TableField("is_close")
    @Schema(description = "是否已关闭 0否 1是")
    private Integer isClose;

    /**
     * 是否删除 0否 1是
     */
    @TableField("delete_flag")
    @TableLogic
    @Schema(description = "是否删除 0否 1是")
    private Integer deleteFlag;


    @Override
    public Serializable pkVal() {
        return this.id;
    }

}
